package org.sundatagroup.aurora.show.entity.asset;

import org.sundatagroup.aurora.show.entity.model.AssetModel;

/**
 * <p>资源静态工厂类
 * <p>用于创建资源实体
 * </p>
 * @author Zdream
 * @date 2018-06-01
 * @since 0.2.0
 */
public class AssetFactory {

	/**
	 * @param am
	 *   资源数据映射
	 * @return
	 *   创建相应的资源实体
	 * @throws IllegalArgumentException
	 *   资源数据无法识别、非法, 特别是 am.type 非法的情况下
	 */
	public static Asset build(AssetModel am) throws IllegalArgumentException {
		switch (am.getType()) {
		case "path":
			return PathAsset.of(am);
		case "image":
			return ImageAsset.of(am);

		default:
			break;
		}
		
		throw new IllegalArgumentException("Asset 无法创建, 无法识别 type: " + am.getType());
	}

}
